package com.microservice.wechat.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.microservice.api.wechat.dto.UserStatisticsDTO;
import com.microservice.wechat.entity.Article;
import com.microservice.api.wechat.dto.UserBindConfigDTO;

import java.util.List;

/**
 * 文章服务接口
 */
public interface ArticleService {
    
    /**
     * 新增文章
     * @param article 文章信息
     * @return 是否成功
     */
    boolean save(Article article);
    
    /**
     * 根据ID删除文章
     * @param id 文章ID
     * @return 是否成功
     */
    boolean removeById(Long id);
    
    /**
     * 更新文章
     * @param article 文章信息
     * @return 是否成功
     */
    boolean updateById(Article article);
    
    /**
     * 根据ID查询文章
     * @param id 文章ID
     * @return 文章信息
     */
    Article getById(Long id);
    
    /**
     * 分页查询文章
     * @param current 当前页
     * @param size 每页大小
     * @param status 状态（可选）
     * @param userName 用户（可选）
     * @return 分页结果
     */
    Page<Article> page(int current, int size, Integer status, String userName);
    
    /**
     * 根据用户ID查询文章列表
     * @param userId 用户ID
     * @return 文章列表
     */
    Page<Article> listByUserId(String userId,Integer status ,int current, int size);
    
    /**
     * 根据状态查询文章列表
     * @param status 状态
     * @return 文章列表
     */
    Page<Article> listByStatus(Integer status, int current, int size);
    
    /**
     * 查询用户统计信息
     * @param userId 用户ID
     * @return 用户统计信息（通过审核的文章数量和总浏览量）
     */
    UserStatisticsDTO getUserStatistics(Long userId);


    List<UserBindConfigDTO> getUserBindAppId(Long userId);
}
